This invention relates particularly to the specification of modules for object-oriented programming, and generally to software development tools generating object-oriented programming language code.
Object-oriented programming enjoys great popularity among programmers. However, in the development of a complex system, the programmer must attend to a vast collection of details. These details may easily obscure and complicate large-scale considerations of the interactions within and between program elements. Hence it would be beneficial to have the use of tools which reduce complexity by automatically handling various details, which may then be suppressed in favor of concise expressions of large-scale interactions.
Object-oriented programming tends to focus on classes, since classes are the most important component in object-oriented programming languages. In many applications, however, significant benefits may be gained by considering modules, which include collections of interrelated classes. Modules typically incorporate classes which are closely related to domain-specific categories. Relationships of generalizations and specialization among domain categories may be reflected in derivation relationships between categorical classes. It would be beneficial for modules to also include non-categorical classes which are specialized for hosting and processing data structures composed of instances from the categorical classes. It would also be beneficial to coordinate and systematize categorical and unitary non-categorical classes to enhance developer productivity, further relieving the developer from excessive attention to tedious details.
The problems of specifying suitable representations have led to enormous efforts in the provision of modeling languages, of which the most prominent may be the Unified Modeling Language (UML). UML is vast and comprehensive, with a scope that encompasses all aspects of object-oriented programming. The breadth of that scope limits the use of idioms, patterns, and other paradigms that are applicable in a narrower context of specific unitary and categorical classes. It would be beneficial to have methods of processing that were specifically directed to the narrower but still critical problems of the specification, construction, and processing of domain-specific object-oriented data structures.
A much-touted feature of UML is its graphical basis. Although graphical diagrams are cherished by some developers, others have found graphical representations of module specifications unintuitive, bulky, clumsy to edit, and inconvenient for automatic processing. Therefore it would be beneficial to have non-graphical means of module specification, especially if such means were intuitive, concise, easy to edit, and convenient for automatic processing.